package com.zhang.service;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import com.zhang.pojo.OrderBean;
import com.zhang.pojo.SaleBean;
import org.springframework.core.annotation.Order;

import java.time.LocalDate;
import java.util.List;

/**
 * 订单业务接口
 */
public interface IOrderService {

//    /**
//     * 根据用户Id查询用户所有订单并分页
//     * @param userId 用户id
//     * @return 分页对象
//     */
//    PageInfo<OrderBean> findByUserId(int userId);

    /**
     * 通过订单id查询订单，同时查询到订单明细，在订单明细中查询，需要查询商品信息
     * @param orderId 订单id
     * @return 订单对象
     */
    OrderBean findById(int orderId);

    /**
     * 结账、
     * 先完成订单的添加，并且记录该订单的Id
     * 根据订单中的用户id，查询购物车中购物的集合
     * 将购物集合中的信息进行遍历，然后添加到订单明细表中
     * 删除该用户的购物集合
     * 根据状态排序
     * @param orderBean 订单对象
     */
    void add(OrderBean orderBean,int userId);

    /**
     * 根据状态，起始时间，结束时间动态查询并分页
     * @param pageNo 页码
     * @param status 订单状态
     * @param start 起始时间
     * @param end 结束时间
     * @return 分页对象
     */
    PageInfo<OrderBean> findByItem(int pageNo,String status, LocalDate start,LocalDate end);

    /**
     * 根据用户id查询 并分页
     * @param pageNo  页码
     * @param userId 用户id
     * @return 分页对象
     */
    PageInfo<OrderBean> findByUserId(int pageNo,Integer userId);


    /**
     * 管理员发货，将该订单状态，修改为"发货中"
     * @param id 订单id
     */
    void send(int id);

    /**
     * 查询所有发货中的订单
     * @return 订单集合
     */
    List<OrderBean> findDeBoy();

    /**
     * 送货员结账，需要将状态改为已完结;
     * @param id 订单id
     */
    void finish(int id);

    /**
     * 查询每个月的销售额
     * @param year 年份
     * @return 销售集合
     */
    List<SaleBean> findAll(int year);
}
